package 炫彩元素类

import (
	xc "gitee.com/go_888/xcgui/xcgui/xc"
	xcc "gitee.com/go_888/xcgui/xcgui/xcc"
)

// X结构_布局 布局元素.
type X结构_布局 struct {
	X结构_基础元素
}

// NewLayoutEle 布局_创建, 创建布局元素.
//
// x: 元素x坐标.
//
// y: 元素y坐标.
//
// cx: 宽度.
//
// cy: 高度.
//
// hParent: 父为窗口句柄或元素句柄.
func X创建布局(元素x坐标, 元素y坐标, 宽度, 高度 int32, 父窗口句柄 int) *X结构_布局 {
	p := &X结构_布局{}
	p.X设置句柄(xc.X布局_创建(元素x坐标, 元素y坐标, 宽度, 高度, 父窗口句柄))
	return p
}

// NewLayoutEleEx 布局_创建扩展, 创建布局元素.
//
// hParent: 父为窗口句柄或元素句柄.
func X创建布局EX(父窗口句柄 int) *X结构_布局 {
	p := &X结构_布局{}
	p.X设置句柄(xc.X布局_创建EX(父窗口句柄))
	return p
}

// NewLayoutEleByHandle 从句柄创建对象.
//
// handle: 布局元素句柄.
func X创建布局并按句柄(句柄 int) *X结构_布局 {
	p := &X结构_布局{}
	p.X设置句柄(句柄)
	return p
}

// NewLayoutEleByLayout 从布局文件创建对象, 失败返回nil.
//
// pFileName: 布局文件名.
//
// hParent: 父对象句柄.
//
// hAttachWnd: 附加窗口句柄, 附加到指定的窗口, 可填0.
func X创建布局并按布局文件(布局文件名 string, 父对象句柄 int, 附加窗口句柄 uintptr) *X结构_布局 {
	handle := xc.X炫彩_加载布局文件(布局文件名, 父对象句柄, 附加窗口句柄)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByLayoutZip 从压缩包中的布局文件创建对象, 失败返回nil.
//
// pZipFileName: zip文件名.
//
// pFileName: 布局文件名.
//
// pPassword: zip密码.
//
// hParent: 父对象句柄.
//
// hAttachWnd: 附加窗口句柄, 附加到指定的窗口, 可填0.
func X创建布局并按zip布局文件(zip文件名 string, 布局文件名 string, zip密码 string, 父对象句柄 int, 附加窗口句柄 uintptr) *X结构_布局 {
	handle := xc.X炫彩_加载zip布局文件(zip文件名, 布局文件名, zip密码, 父对象句柄, 附加窗口句柄)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByLayoutZipResEx 从RC资源zip压缩包中的布局文件创建对象, 失败返回nil.
//
// id: RC资源ID.
//
// pFileName: zip文件名.
//
// pPassword: zip密码.
//
// pPrefixName: 名称(name)前缀, 可选参数; 给当前布局文件中所有name属性增加前缀, 那么name属性值为: 前缀 + name.
//
// hParent: 父对象句柄.
//
// hParentWnd: 父窗口句柄HWND, 提供给第三方窗口使用.
//
// hAttachWnd: 附加窗口句柄, 附加到指定的窗口, 可填0.
//
// hModule: 模块句柄, 可填0.
func X创建布局并按RC资源zip布局文件EX(RC资源ID int32, 布局文件名, zip密码, 名称 string, 父对象句柄 int, 父窗口句柄HWND, 附加窗口句柄, 模块句柄 uintptr) *X结构_布局 {
	handle := xc.X炫彩_加载布局文件资源zipEX(RC资源ID, 布局文件名, zip密码, 名称, 父对象句柄, 父窗口句柄HWND, 附加窗口句柄, 模块句柄)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByLayoutZipMem 从内存压缩包中的布局文件创建对象, 失败返回nil.
//
// data: 布局文件数据.
//
// pFileName: 布局文件名.
//
// pPassword: zip密码.
//
// hParent: 父对象句柄.
//
// hAttachWnd: 附加窗口句柄, 附加到指定的窗口, 可填0.
func X创建布局并按内存zip布局文件(布局文件数据 []byte, 布局文件名 string, zip密码 string, 父对象句柄 int, 附加窗口句柄 uintptr) *X结构_布局 {
	handle := xc.X炫彩_加载内存zip布局文件(布局文件数据, 布局文件名, zip密码, 父对象句柄, 附加窗口句柄)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByStringW 从布局文件字符串W创建对象, 失败返回nil.
//
// pStringXML: 字符串.
//
// hParent: 父对象.
//
// hAttachWnd: 附加窗口句柄, 附加到指定的窗口, 可填0.
func X创建布局并按布局文件文本W(xml文本 string, 父对象 int, 附加窗口句柄 uintptr) *X结构_布局 {
	handle := xc.X炫彩_加载布局文件从文本W(xml文本, 父对象, 附加窗口句柄)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByLayoutEx 从布局文件创建对象, 失败返回nil.
//
// pFileName: 布局文件名.
//
// pPrefixName: 名称(name)前缀, 可选参数; 给当前布局文件中所有name属性增加前缀, 那么name属性值为: 前缀 + name.
//
// hParent: 父对象句柄.
//
// hParentWnd: 父窗口句柄HWND, 提供给第三方窗口使用.
//
// hAttachWnd: 附加窗口句柄, 附加到指定的窗口, 可填0.
func X创建布局并按布局文件EX(布局文件名, 名称前缀 string, 父对象句柄 int, 父窗口句柄HWND, 附加窗口句柄 uintptr) *X结构_布局 {
	handle := xc.X炫彩_加载布局文件Ex(布局文件名, 名称前缀, 父对象句柄, 父窗口句柄HWND, 附加窗口句柄)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByLayoutZipEx 从压缩包中的布局文件创建对象, 失败返回nil.
//
// pZipFileName: zip文件名.
//
// pFileName: 布局文件名.
//
// pPassword: zip密码.
//
// pPrefixName: 名称(name)前缀, 可选参数; 给当前布局文件中所有name属性增加前缀, 那么name属性值为: 前缀 + name.
//
// hParent: 父对象句柄.
//
// hParentWnd: 父窗口句柄HWND, 提供给第三方窗口使用.
//
// hAttachWnd: 附加窗口句柄, 附加到指定的窗口, 可填0.
func X创建布局并按zip布局文件EX(zip文件名 string, 布局文件名 string, zip密码, 名称前缀 string, 父对象句柄 int, 父窗口句柄HWND, 附加窗口句柄 uintptr) *X结构_布局 {
	handle := xc.X炫彩_加载zip布局文件Ex(zip文件名, 布局文件名, zip密码, 名称前缀, 父对象句柄, 父窗口句柄HWND, 附加窗口句柄)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByLayoutZipMemEx 从内存压缩包中的布局文件创建对象, 失败返回nil.
//
// data: 布局文件数据.
//
// pFileName: 布局文件名.
//
// pPassword: zip密码.
//
// pPrefixName: 名称(name)前缀, 可选参数; 给当前布局文件中所有name属性增加前缀, 那么name属性值为: 前缀 + name.
//
// hParent: 父对象句柄.
//
// hParentWnd: 父窗口句柄HWND, 提供给第三方窗口使用.
//
// hAttachWnd: 附加窗口句柄, 附加到指定的窗口, 可填0.
func X创建布局并按内存zip布局文件EX(布局文件数据 []byte, 布局文件名 string, zip密码, 名称 string, 父对象句柄 int, 父窗口句柄HWND, 附加窗口句柄 uintptr) *X结构_布局 {
	handle := xc.X炫彩_加载内存zip布局文件Ex(布局文件数据, 布局文件名, zip密码, 名称, 父对象句柄, 父窗口句柄HWND, 附加窗口句柄)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByStringWEx 从布局文件字符串W创建对象, 失败返回nil.
//
// pStringXML: 字符串.
//
// pPrefixName: 名称(name)前缀, 可选参数; 给当前布局文件中所有name属性增加前缀, 那么name属性值为: 前缀 + name.
//
// hParent: 父对象.
//
// hParentWnd: 父窗口句柄HWND, 提供给第三方窗口使用.
//
// hAttachWnd: 附加窗口句柄, 附加到指定的窗口, 可填0.
func X创建布局并按布局文件文本WEX(xml文本, 名称前缀 string, 父对象 int, 父窗口句柄HWND, 附加窗口句柄 uintptr) *X结构_布局 {
	handle := xc.X炫彩_加载布局文件从文本WEx(xml文本, 名称前缀, 父对象, 父窗口句柄HWND, 附加窗口句柄)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByName 从name创建对象, 失败返回nil.
//
// name: name名称.
func X创建布局并按名称(名称 string) *X结构_布局 {
	handle := xc.X取对象并按名称(名称)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByID 从ID创建对象, 失败返回nil.
//
// hWindow: 父窗口句柄.
//
// nID: ID值.
func X创建布局并按ID(父窗口句柄 int, ID int32) *X结构_布局 {
	handle := xc.X取对象并按ID(父窗口句柄, ID)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByIDName 从ID名称创建对象, 失败返回nil.
//
// hWindow: 父窗口句柄.
//
// name: name名称.
func X创建布局并按ID名称(父窗口句柄 int, 名称 string) *X结构_布局 {
	handle := xc.X取对象并按ID名称(父窗口句柄, 名称)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByUID 从UID创建对象, 失败返回nil.
//
// nUID: ID值.
func X创建布局并按UID(UID int32) *X结构_布局 {
	handle := xc.X取对象并按UID(UID)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// NewLayoutEleByUIDName 从UID名称创建对象, 失败返回nil.
//
// name: name名称.
func X创建布局并按UID名称(名称 string) *X结构_布局 {
	handle := xc.X取对象并按UID名称(名称)
	if handle > 0 {
		p := &X结构_布局{}
		p.X设置句柄(handle)
		return p
	}
	return nil
}

// IsEnableLayout 布局_判断启用, 是否已经启用布局功能.
func (l *X结构_布局) X判断启用() bool {
	return xc.X布局_是否启用(l.X句柄)
}

// EnableLayout 布局_启用, 启用布局功能.
//
// bEnable: 是否启用.
func (l *X结构_布局) X启用(是否启用 bool) *X结构_布局 {
	xc.X布局_启用(l.X句柄, 是否启用)
	return l
}

// ShowLayoutFrame 布局_显示布局边界, 显示布局边界.
//
// bEnable: 是否显示.
func (l *X结构_布局) X显示布局边界(是否显示 bool) *X结构_布局 {
	xc.X布局_显示布局边界(l.X句柄, 是否显示)
	return l
}

// GetWidthIn 布局_取内宽度, 获取宽度, 不包含内边距大小.
func (l *X结构_布局) X取内宽度() int32 {
	return xc.X布局_取内宽度(l.X句柄)
}

// GetHeightIn 布局_取内高度, 获取高度, 不包含内边距大小.
func (l *X结构_布局) X取内高度() int32 {
	return xc.X布局_取内高度(l.X句柄)
}

/*
LayoutBox-布局盒子
*/

// EnableHorizon 布局盒子_启用水平.
//
// bEnable: 是否启用.
func (l *X结构_布局) X启用水平(是否启用 bool) *X结构_布局 {
	xc.X布局盒子_启用水平(l.X句柄, 是否启用)
	return l
}

// EnableAutoWrap 布局盒子_启用自动换行.
//
// bEnable: 是否启用.
func (l *X结构_布局) X启用自动换行(是否启用 bool) *X结构_布局 {
	xc.X布局盒子_启用自动换行(l.X句柄, 是否启用)
	return l
}

// EnableOverflowHide 布局盒子_启用溢出隐藏.
//
// bEnable: 是否启用.
func (l *X结构_布局) X启用溢出隐藏(是否启用 bool) *X结构_布局 {
	xc.X布局盒子_启用溢出隐藏(l.X句柄, 是否启用)
	return l
}

// SetAlignH 布局盒子_置水平对齐.
//
// nAlign: 对齐方式: xcc.Layout_Align_.
func (l *X结构_布局) X设置水平对齐(对齐方式 xcc.X布局对齐) *X结构_布局 {
	xc.X布局盒子_设置水平对齐(l.X句柄, 对齐方式)
	return l
}

// SetAlignV 布局盒子_置垂直对齐.
//
// nAlign: 对齐方式: xcc.Layout_Align_.
func (l *X结构_布局) X设置垂直对齐(对齐方式 xcc.X布局对齐) *X结构_布局 {
	xc.X布局盒子_设置垂直对齐(l.X句柄, 对齐方式)
	return l
}

// SetAlignBaseline 布局盒子_置对齐基线.
//
// nAlign: 对齐方式: xcc.Layout_Align_Axis_.
func (l *X结构_布局) X设置对齐基线(对齐方式 xcc.X布局轴对齐) *X结构_布局 {
	xc.X布局盒子_设置对齐基线(l.X句柄, 对齐方式)
	return l
}

// SetSpace 布局盒子_置间距.
//
// nSpace: 项间距大小.
func (l *X结构_布局) X设置间距(项间距 int32) *X结构_布局 {
	xc.X布局盒子_设置间距(l.X句柄, 项间距)
	return l
}

// SetSpaceRow 布局盒子_置行距.
//
// nSpace: 行间距大小.
func (l *X结构_布局) X设置行距(行间距 int32) *X结构_布局 {
	xc.X布局盒子_设置行距(l.X句柄, 行间距)
	return l
}
